以下の関数は、それぞれ文字を判定する関数です。
すでに紹介済のものもありますが、このページにまとめておきます。
isalpha | 英字の判定 |
---|---|
isalnum | 英数字の判定 |
iscntrl | 制御文字の判定 |
isdigit | 10進数字の判定 |
isxdigit | 16進数字の判定 |
isgraph | 表示できる文字(スペースは含まない)の判定 |
isprint | 表示できる文字(スペースも含む)の判定 |
ispunct | 表示できる文字(スペースと英数字は含まない)の判定 |
isspace | 空白文字の判定 |
islower | 英小文字の判定 |
isupper | 英大文字の判定 |
#include <ctype.h>
int isalpha(int c);
int isalnum(int c);
int iscntrl(int c);
int isdigit(int c);
int isxdigit(int c);
int isgraph(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int islower(int c);
int isupper(int c);
cは、チェックしたい文字を指定します。EOF(-1)も判定する可能性があるため、int型になっています。
戻り値として、引数の値が判定内容に合致すれば0以外を、合致しなければ0を返します。
プログラム 例
#include <stdio.h> #include <ctype.h> int main(void) { int i; int ch = ' '; char *msg_last = NULL; int (*is__[])(int) = { isalpha, isalnum, iscntrl, isdigit, isxdigit, isgraph, isprint, ispunct, isspace, islower, isupper, NULL }; char *chk[] = { '英字', '英数字', '制御文字', '10進数字', '16進数字', '表示できる文字(スペースは含まない)', '表示できる文字(スペースも含む)', '表示できる文字(スペースと英数字は含まない)', '空白文字', '英小文字', '英大文字', NULL }; ch = getch(); i = 0; while(NULL != chk[i]) { //各種文字の判定 if (is__[i](ch)) { msg_last = 'です。'; } else { msg_last = 'ではありません。'; } printf(''%c'は%s%sn', (char)ch, chk[i], msg_last); i++; } return 0; }
例の実行結果(‘b’を押下した場合)
> is__.exe 'b'は英字です。 'b'は英数字です。 'b'は制御文字ではありません。 'b'は10進数字ではありません。 'b'は16進数字です。 'b'は表示できる文字(スペースは含まない)です。 'b'は表示できる文字(スペースも含む)です。 'b'は表示できる文字(スペースと英数字は含まない)ではありません。 'b'は空白文字ではありません。 'b'は英小文字です。 'b'は英大文字ではありません。
※Windows環境でのみ動作確認しております。LINUX環境などでは動作が異なる場合がありますので、その場合は環境に合わせてカスタマイズしてください。
Copyright © 2011 katsumi Handa All Rights Reserved.